// channel 是一种用于在 goroutine 之间传递数据的机制

// 主要作用：

// 通信：通过 channel，可以让多个 goroutines 之间交换数据。
// 同步：使用 channel 可以使得某个 goroutine 在完成特定操作后通知其他 goroutine，或者等待其他 goroutine 完成任务。
// 阻塞行为：发送和接收数据时会自动阻塞，直到操作可以继续。

package main

import (
	"fmt"
)

// 创建一个channel
func main() {
	// 创建一个channel
	ch := make(chan int)
	fmt.Printf("channel: %v ,Type: %T\n", ch, ch)

	// 启动一个协程，向channel中写入数据
	go func() {
		// 向channel中写入数据
		ch <- 1
	}()

	// 从channel中读取数据
	result := <-ch
	fmt.Println(result)
}
